package com.imooc.miaosha.util;

import org.apache.commons.codec.digest.DigestUtils;

/**
 * MD5工具类
 *
 * @author joshua
 */
public class MD5Util {


    /**
     * 默认的salt
     */
    private static final String SALT = "1a2b3c4d";


    /**
     * MD5 加密
     *
     * @param src 代价密的字符
     * @return 加密后的MD5
     */
    public static String md5(String src) {
        return DigestUtils.md5Hex(src);
    }

    /**
     * 将输入的密码转为在网络中传输的密码
     *
     * @param inputPass 前端输入的密码
     * @return
     */
    public static String inputPassToFormPass(String inputPass) {
        String str = "" + SALT.charAt(0) + SALT.charAt(2) + inputPass + SALT.charAt(5) + SALT.charAt(4);
        return md5(str);
    }

    /**
     * 将网络传输中的form表单密码转为数据库中的MD5
     *
     * @param formPass 网络中form传递的密码
     * @param salt     随机的salt
     * @return 二次加密后的pass
     */
    public static String formPassToDBPass(String formPass, String salt) {
        String str = "" + salt.charAt(0) + salt.charAt(2) + formPass + salt.charAt(5) + salt.charAt(4);
        return md5(str);
    }

    /**
     * 前端form的password 直接转为存在 DB中的pass
     *
     * @param inputPass 前端的明文密码
     * @param saltDB    后端随机的salt
     * @return 数据库密码
     */
    public static String inputPassToDbPass(String inputPass, String saltDB) {
        String formPass = inputPassToFormPass(inputPass);
        String dbPass = formPassToDBPass(formPass, saltDB);
        return dbPass;
    }
}
